* Converts a #GskTransform to 2D affine transformation
* factors.
* @self must be a 2D transformation. If you are not
- * sure, use gsk_transform_get_category() >=
+ * sure, use gsk_transform_get_category() >=
* %GSK_TRANSFORM_CATEGORY_2D_AFFINE to check.
*/
void
float *out_dx,
float *out_dy)
{
- if (self == NULL ||
- self->category < GSK_TRANSFORM_CATEGORY_2D_AFFINE)
+ if (self == NULL)
{
- if (self != NULL)
- {
- char *s = gsk_transform_to_string (self);
- g_warning ("Given transform \"%s\" is not an affine 2D transform.", s);
- g_free (s);
- }
*out_scale_x = 1.0f;
*out_scale_y = 1.0f;
*out_dx = 0.0f;
return;
}
- gsk_transform_to_affine (self->next,
- out_scale_x, out_scale_y,
- out_dx, out_dy);
+ if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D_AFFINE))
+ {
+ char *s = gsk_transform_to_string (self);
+ g_warning ("Given transform \"%s\" is not an affine 2D transform.", s);
+ g_free (s);
+
+ *out_scale_x = 1.0f;
+ *out_scale_y = 1.0f;
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+ return;
+ }
+
+ if (self->next != NULL)
+ {
+ gsk_transform_to_affine (self->next,
+ out_scale_x, out_scale_y,
+ out_dx, out_dy);
+ }
+ else
+ {
+ *out_scale_x = 1.0f;
+ *out_scale_y = 1.0f;
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+ }
self->transform_class->apply_affine (self,
out_scale_x, out_scale_y,
float *out_dx,
float *out_dy)
{
- if (self == NULL ||
- self->category < GSK_TRANSFORM_CATEGORY_2D_TRANSLATE)
+ if (self == NULL)
{
- if (self != NULL)
- {
- char *s = gsk_transform_to_string (self);
- g_warning ("Given transform \"%s\" is not a 2D translation.", s);
- g_free (s);
- }
*out_dx = 0.0f;
*out_dy = 0.0f;
return;
}
- gsk_transform_to_translate (self->next,
- out_dx, out_dy);
+ if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D_TRANSLATE))
+ {
+ char *s = gsk_transform_to_string (self);
+ g_warning ("Given transform \"%s\" is not an affine 2D translation.", s);
+ g_free (s);
+
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+ return;
+ }
+
+ if (self->next != NULL)
+ {
+ gsk_transform_to_translate (self->next,
+ out_dx, out_dy);
+ }
+ else
+ {
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+ }
self->transform_class->apply_translate (self,
out_dx, out_dy);